//package com.domdd.service.rocketmq;
//
//import org.apache.rocketmq.client.producer.DefaultMQProducer;
//import org.apache.rocketmq.client.producer.MQProducer;
//import org.apache.rocketmq.client.producer.MessageQueueSelector;
//import org.apache.rocketmq.client.producer.SendResult;
//import org.apache.rocketmq.common.message.Message;
//import org.apache.rocketmq.common.message.MessageQueue;
//import org.apache.rocketmq.remoting.common.RemotingHelper;
//
//import java.util.List;
//
///**
// * @author lw
// * @date 2022/3/3 6:08 下午
// */
//public class OrderedProducer {
//    public static void main(String[] args) throws Exception {
//        //Instantiate with a producer group name.
//        DefaultMQProducer producer = new DefaultMQProducer("lw_ordered");
//        producer.setNamesrvAddr("47.98.252.4:9876");
//        //Launch the instance.
//        producer.start();
//        String[] tags = new String[]{"TagA", "TagB", "TagC", "TagD", "TagE"};
//        for (int i = 0; i < 100; i++) {
//            int orderId = i % 10;
//            //Create a message instance, specifying topic, tag and message body.
//            Message msg = new Message("lw_order", tags[i % tags.length], "KEY" + i,
//                    ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET));
//            SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
//                /**
//                 *         一个Topic默认自动创建4个队列，如果想让某条消息到达Topic的某个特定的队列中，
//                 *         可以在发送消息时使用MessageQueueSelector来指定，消息要到达的队列。
//                 *         在同步发送和异步发送消息时，都支持指定特定的队列。
//                 *         而消费端消费的时候，是会分配到多个queue的，多个queue是同时拉取提交消费。
//                 * @param mqs
//                 * @param msg
//                 * @param arg
//                 * @return
//                 */
//                @Override
//                public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
//                    Integer id = (Integer) arg;
//                    int index = id % mqs.size();
//                    return mqs.get(index);
//                }
//            }, orderId);
//
//            System.out.printf("%s%n", sendResult);
//        }
//        //server shutdown
//        producer.shutdown();
//    }
//}